﻿#define _CRT_SECURE_NO_WARNINGS 1
给你一个正方形矩阵 mat，请你返回矩阵对角线元素的和。

请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。
int diagonalSum(int** mat, int matSize, int* matColSize){
	int i = 0;
	int count = 0;
	for (i = 0; i<matSize; i++)
	{
		count += mat[i][i] + mat[i][matSize - i - 1];
		if (i == matSize - i - 1)
		{
			count -= mat[i][i];
		}
	}
	return count;
}








给你一个下标从 0 开始的字符串 s ，它的 偶数 下标处为小写英文字母，奇数 下标处为数字。
定义一个函数 shift(c, x) ，其中 c 是一个字符且 x 是一个数字，函数返回字母表中 c 后面第 x 个字符。
比方说，shift('a', 5) = 'f' 和 shift('x', 0) = 'x' 。
对于每个 奇数 下标 i ，你需要将数字 s[i] 用 shift(s[i - 1], s[i]) 替换。
请你替换所有数字以后，将字符串 s 返回。题目 保证 shift(s[i - 1], s[i]) 不会超过 'z' 。
来源：力扣（LeetCode）
链接：https ://leetcode-cn.com/problems/replace-all-digits-with-characters
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
char * replaceDigits(char * s){
	int i = 0;
	int j = 0;
	int len = strlen(s);
	for (i = 1; i<len; i += 2)
	{
		s[i] = s[i - 1] + (s[i] - '0');
	}
	return s;
}








两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y，计算并返回它们之间的汉明距离。
int hammingDistance(int x, int y){
	int n = x^y;
	int count = 0;
	while (n)
	{
		if (n & 1)
		{
			count++;
		}
		n >>= 1;
	}
	return count;
}






/**未知 整数数组 arr 由 n 个非负整数组成。
经编码后变为长度为 n - 1 的另一个整数数组 encoded ，其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如，arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。
给你编码后的数组 encoded 和原数组 arr 的第一个元素 first（arr[0]）。
请解码返回原数组 arr 。可以证明答案存在并且是唯一的。
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/decode-xored-array
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
* Note: The returned array must be malloced, assume caller calls free().
*/
int* decode(int* encoded, int encodedSize, int first, int* returnSize){
	*returnSize = encodedSize + 1;
	int* a = calloc(*returnSize, sizeof(int));
	int i = 0;
	a[0] = first;
	for (i = 1; i<*returnSize; i++)
	{
		a[i] = a[i - 1] ^ encoded[i - 1];
	}
	return a;
}  